package com.xzy.generic.bad.example.c;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * 随着项目的迭代，系统各种逐渐出现了许多“模板化”的Event类，有必要抽象出通用的Event。
 * <p>
 * 【Object + Class】是一种方式，但是自从Java提供了泛型，这种方式就显得不够优雅和方便。
 * <p>
 * 然而，在Spring中，【泛型事件】的编写需要一定规范
 *
 * @author xzy.xiao
 * @date 2023/2/28  20:06
 */
class Main {
    public static void main(String[] args) {
        // 创建容器
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();

        // 注册事件监听器
        applicationContext.registerBean("eventAaaListener", AaaEventListener.class);
        applicationContext.refresh();

        // 发布事件
        AaaEventPublisher.sendInsertEvent(applicationContext);
        AaaEventPublisher.sendDeleteEvent(applicationContext);
        AaaEventPublisher.sendUpdateEvent(applicationContext);

        BbbEventPublisher.sendInsertEvent(applicationContext);
        BbbEventPublisher.sendDeleteEvent(applicationContext);
        BbbEventPublisher.sendUpdateEvent(applicationContext);

    }
}
